Method and apparatus for providing network applications monitoring

ABSTRACT

A method for providing network performance monitoring using a performance database manager (PDM) is disclosed. A PDM has a PDM state manager, a communications server (COM server), a communications client (COM client), and an application database (AppDB). The PDM is configured to communicate with a network controller and a switch running a service monitoring (SERMON) client. A list of one or more switches, one or more hosted services, and one or more applications is determined. A request for service monitoring (SERMON) data is received from one or more applications running on a network controller. The request is sent to a SERMON client. A response is received from the SERMON client.

FIELD

The present disclosure relates to frameworks for virtualized andnon-virtualized environments. More particularly, the present disclosurerelates to frameworks for providing performance monitoring.

BACKGROUND

Many telecom-oriented services are being considered for deploymentwithin the confines of data-centers. These services have a large computebias and lax latency requirements. Current data-centric deploymentsinvolve a large number of machines on the order of hundreds of thousandsin both virtual as well as non-virtual environments.

A Distributed Resource Scheduler (DRS) is a technology that is used tooptimize computing resources to align with business needs andpriorities. The DRS can operate in a manual mode or an automatic mode.In an automatic mode the DRS determines the best possible distributionof virtual machines, taking into account the business policies, andrelocates the virtual machines to the appropriate physical servers. In amanual mode the DRS makes recommendations that align with businesspolicies. The DRS runs in the context of a virtual center (vCenter) andassists the resource allocation function.

A Vscheduler is another framework for managing processor resources. Itslocal and global resource configuration framework allows virtualmachines (VMs) to be balanced for processing resources locally andglobally across a cluster. The Vscheduler uses a centralized managernode that receives input from VMAgents in VMs and PMAgents in physicalnodes.

The Memory Balancer (MEMB) dynamically monitors the memory usage of eachVM in a virtual environment, predicts the memory needs of each VM basedon swap space usage and a least recently used (LRU) histogram to trackphysical addresses, and periodically reallocates host memory to the VMsneeding more memory resources.

Frameworks such as the ones mentioned above provide a centralizedmechanism to optimize the cluster/host resources like CPU, Memory,Storage, and Power across a plurality of machines.

These aforementioned frameworks provide tools to optimize the host andcluster wide resources like CPU and memory. Given the importance ofconnectivity in a data center there is a dearth of frameworks thatoptimize the performance of a network or a connection fabric.

Application performance metrics like the number of open sockets and theworking set size for example, require the cooperation of the GuestOperating System (OS), running in the guest domain (Domain U) on top ofwhich the application is running.

What is needed, therefore, is a framework for exporting applicationconfiguration and performance information for performance monitoring invirtualized and non-virtualized environments.

SUMMARY

A method for providing network performance monitoring using aperformance database manager (PDM) is disclosed. In one embodiment, alist of one or more switches, one or more hosted services, and one ormore applications is determined. A request for service monitoring(SERMON) data is received from one or more applications running on anetwork controller. The request is sent to a SERMON client. A responseis received from the SERMON client.

In one embodiment, the one or more switches can be Layer2 switches. ThePDM can receive the list on boot up. The PDM can also periodically querythe network controller to update the list.

A communications server of the PDM parses the request and sends the listto a PDM state manager.

The request can be a snapshot request. When the snapshot request is afirst time request, an application identifier is flagged for retrievalof SERMON information. The response received in response to the snapshotrequest is sent to the application upon receipt from the SERMON client.When the snapshot request is not a first time request, a PDM statemanager stores in a database SERMON data related to the applicationidentifier from the response.

A PDM state manager formulates the request message and sends the messageto the one or more switches hosting the one or more hosted services. ThePDM sends the response to the one or more applications on thecontroller.

An apparatus for providing network performance monitoring is disclosed.In one embodiment, the apparatus includes a performance database manager(PDM). The PDM has a PDM state manager, a communications server (COMserver), a communications client (COM client), and an applicationdatabase (AppDB).

The PDM is configured to communicate with a network controller and aswitch running a service monitoring (SERMON) client. The PDM is furtherconfigured to: determine a list of one or more switches, one or morehosted services, and one or more applications; receive a request forSERMON data from the one or more applications running on the networkcontroller; send the request to the SERMON client; and receive aresponse from the SERMON client.

In one embodiment, the one or more switches can be layer2 switches. Inone embodiment, the COM server parses the request and sends the list tothe PDM state manager.

In one embodiment, the request can be a snapshot request. When, thesnapshot request is a first time request, an application identifier isflagged for retrieval of SERMON information. The response received inresponse to the snapshot request is sent to the application upon receiptfrom the SERMON client. When the snapshot request is not a first timerequest, the PDM state manager stores in the AppDB SERMON data relatedto the application identifier from the response.

The PDM state manager formulates the request message and sends themessage to the one or more switches hosting the one or more hostedservices. The PDM sends the response to the one or more applications onthe controller.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings in which likereferences indicate similar elements. It should be noted that differentreferences to “an” or “one” embodiment in this disclosure are notnecessarily to the same embodiment, and such references mean at leastone. Further, when a particular feature, structure, or characteristic isdescribed in connection with an embodiment, it is submitted that it iswithin the knowledge of one skilled in the art to affect such feature,structure, or characteristic in connection with other embodimentswhether or not explicitly described.

FIG. 1 illustrates a block diagram of a system for providing performancemonitoring, according to one embodiment.

FIG. 2 illustrates a block diagram of a service monitoring (SERMON)client and SERMON server architecture, according to one embodiment.

FIG. 3 illustrates a system for implementing software defined networking(SDN) inline services and forwarding, according to one embodiment.

FIG. 4 illustrates a hierarchical relationship of performance data,according to one embodiment.

FIG. 5 illustrates a message format, according to one embodiment.

FIG. 6 illustrates the requests that can be sent by an application tothe performance database manager (PDM).

FIG. 7 illustrates a block diagram of a performance data reply messageformat, according to one embodiment.

FIG. 8 illustrates a block diagram of a performance data reply messageformat, according to one embodiment.

FIG. 9 illustrates a block diagram of a performance data reply messageformat, according to one embodiment.

FIG. 10 illustrates a block diagram of a performance data reply messageformat, according to one embodiment.

FIG. 11 shows a request/response format for a counter, according to oneembodiment.

FIG. 12 illustrates a block diagram of a method for providing networkperformance monitoring according, to one embodiment.

FIG. 13 illustrates a block diagram of a method for determining aservice path using network performance monitoring data, according to oneembodiment.

FIG. 14 illustrates a block diagram of a method for providing networkperformance monitoring using a PDM, according to one embodiment.

FIG. 15 illustrates a block diagram of a method for providing networkperformance monitoring using a SERMON client, according to oneembodiment.

FIG. 16 illustrates a block diagram of a method for providing networkperformance monitoring using a SERMON server, according to oneembodiment.

FIG. 17 illustrates a block diagram of an exemplary computer system,according to one embodiment.

DESCRIPTION OF EMBODIMENTS

In the following description, numerous specific details are set forth.However, it is understood that embodiments of the invention may bepracticed without these specific details. In other instances, well-knowncircuits, structures and techniques have not been shown in detail inorder not to obscure the understanding of this description. It will beappreciated, however, by one skilled in the art that the invention maybe practiced without such specific details. Those of ordinary skill inthe art, with the included descriptions, will be able to implementappropriate functionality without undue experimentation.

References in the specification to “one embodiment”, “an embodiment”,“an example embodiment”, etc., indicate that the embodiment describedmay include a particular feature, structure, or characteristic, butevery embodiment may not necessarily include the particular feature,structure, or characteristic. Moreover, such phrases are not necessarilyreferring to the same embodiment. Further, when a particular feature,structure, or characteristic is described in connection with anembodiment, it is submitted that it is within the knowledge of oneskilled in the art to effect such feature, structure, or characteristicin connection with other embodiments whether or not explicitlydescribed.

In the following description and claims, the terms “coupled” and“connected,” along with their derivatives, may be used. It should beunderstood that these terms are not intended as synonyms for each other.“Coupled” is used to indicate that two or more elements, which may ormay not be in direct physical or electrical contact with each other,co-operate or interact with each other. “Connected” is used to indicatethe establishment of communication between two or more elements that arecoupled with each other.

As used herein, a network element (e.g., a router, switch, bridge) is apiece of networking equipment, including hardware and software thatcommunicatively interconnects other equipment on the network (e.g.,other network elements, end stations). Some network elements are“multiple services network elements” that provide support for multiplenetworking functions (e.g., routing, bridging, switching, Layer 2aggregation, session border control, Quality of Service, and/orsubscriber management), and/or provide support for multiple applicationservices (e.g., data, voice, and video). Subscriber end stations (e.g.,servers, workstations, laptops, netbooks, palm tops, mobile phones,smartphones, multimedia phones, Voice Over Internet Protocol (VOIP)phones, user equipment, terminals, portable media players, tablets, GPSunits, gaming systems, set-top boxes) access content/services providedover the Internet and/or content/services provided on virtual privatenetworks (VPNs) overlaid on (e.g., tunneled through) the Internet. Thecontent and/or services are typically provided by one or more endstations (e.g., server end stations) belonging to a service or contentprovider or end stations participating in a peer to peer service, andmay include, for example, public webpages (e.g., free content, storefronts, search services), private webpages (e.g., username/passwordaccessed webpages providing email services), and/or corporate networksover VPNs. Typically, subscriber end stations are coupled (e.g., throughcustomer premise equipment coupled to an access network (wired orwirelessly)) to edge network elements, which are coupled (e.g., throughone or more core network elements) to other edge network elements, whichare coupled to other end stations (e.g., server end stations).

Different embodiments of the invention may be implemented usingdifferent combinations of software, firmware, and/or hardware. Thus, thetechniques shown in the figures can be implemented using code and datastored and executed on one or more electronic devices (e.g., an endstation, a network element). Such electronic devices store andcommunicate (internally and/or with other electronic devices over anetwork) code and data using computer-readable media, such asnon-transitory computer-readable storage media (e.g., magnetic disks;optical disks; random access memory; read only memory; flash memorydevices; phase-change memory) and transitory computer-readabletransmission media (e.g., electrical, optical, acoustical or other formof propagated signals—such as carrier waves, infrared signals, digitalsignals). In addition, such electronic devices typically include a setof one or more processors coupled to one or more other components, suchas one or more storage devices (non-transitory machine-readable storagemedia), user input/output devices (e.g., a keyboard, a touchscreen,and/or a display), and network connections. The coupling of the set ofprocessors and other components is typically through one or more bussesand bridges (also termed as bus controllers). Thus, the storage deviceof a given electronic device typically stores code and/or data forexecution on the set of one or more processors of that electronicdevice.

A seamless non-intrusive scalable framework that retrieves the networkapplication performance metrics from a collection of applicationsrunning on machines is disclosed. The network application performancemetrics can be easily exported to the centralized controller componentin Software Defined Networks (SDNs).

The framework includes components and messaging that work coherentlytogether to achieve the objective of presenting the network applicationrunning in the centralized controller with the performance data neededto make an intelligent decision for loading balancing network flowsacross several instances of a network appliance.

The use of such a framework can lead to supporting the deployment ofcloud services with stringent service level agreements for networkperformance in even more dynamic service environments while makingcost-effective use of network infrastructures without grossover-provisioning.

SDNs offer scope for a global view of the network including the topologyand the metrics. It is possible to perform automatic load balancing andplacement features based on metrics that can be obtained from theservices in the network. In a services network there may be multipleinstances of a particular service like Deep Packet Insertion (DPI) or acontent filter running in a network. The present disclosure defines aframework for providing useful performance data of a hosted application.

FIG. 1 illustrates a block diagram of a system for providing performancemonitoring, in accordance with one embodiment. As shown in FIG. 1, theframework, e.g., system 100, has a scalable performance data basemanager (PDM) 102. The PDM 102 includes a database, e.g., AppDB 104, aPDM state manager 106, a Communications (COM) client 108, and a COMserver 110. Database 104 includes information that is used, for example,by controller applications 114, 116, 118.

The PDM state manager 106 is responsible for managing all of the statesfor metrics that are periodically collected from one or more entitiesrunning in the context of the hosted service environment. The PDM statemanager 106 stores these states in AppDB 104. The PDM state manager 106is also responsible for formulating messages, e.g., from requests,received from a network controller 112 through COM server 110 andfunneling these messages to the COM client 108.

As stated above, network controller 112 sends requests to PDM 102.Network controller 112 also runs network application programminginterfaces (API's) 120 and network middleware 122. In one embodiment,the request may include a datapath identifier (DPID), a host identifier(HostID), and application identifier (AppID), and other data (X₁, X₂, .. . , X_(n)). This other data can be the request for actual data items,e.g., number of open sockets, average load, etc.

Communications (COM) server module 110 services requests fromapplications 114, 116, 118 running on network controller 112. A COMclient module 108 assists the PDM 102 with populating the database 104by maintaining connections to each entity, e.g., the Service Monitoring(SERMON) client 124, 126, 128, 130, that services the requests. TheSERMON client 124, 126, 128, 130 services the requests made by the COMclient module 108. A SERMON server module 132, 134, 136, 138, 140retrieves the requested information for an application 114, 116, 118using an AppID.

The database 104 and its manager 102 can be co-located within thecontroller 112 or outside of it, depending on the specific configurationfor communication between the controller 112 and the database manager102. In FIG. 1, the SDN controller 112 and the PDM 102 are shown asdifferent entities. The communication between them is shown to begeneric and is not restricted to any message type. In one embodiment, aRESTful interface, i.e., corresponding to Representational StateTransfer (REST) constraints, or any proprietary interface can be used aspart of the implementation. Although some of the messages of the presentdisclosure are described as using a RESTful interface, as stated above,the present disclosure is not limited to RESTful interfaces.

The centralized PDM 102 is responsible for populating the information inthe database 104, which depends on a schema that is given to the PDM 102by the SDN application 114, 116, 118. The SDN application 114, 116, 118is decoupled from the database 104 and is also not responsible formaintaining connections with each application agent. The applicationagent is a component that runs on top of the network controller and actson behalf of an application. The application agent forms the actualrequests to be sent and is also responsible for handling the responsesfor the requests. Further the COM client 108 in the PDM 102 moduleconnects with each SERMON client 124, 126, 128, 130 that handles thedatabase requests. SERMON client 124, 126, 128, 130 is running on aLayer 2 Switch 144, 146, 148, 150.

The Layer 2 Switch can be a virtual switch running in a hypervisor, aphysical Ethernet switch, or an Openflow switch. The SERMON modulerunning on the switch runs as a functional block that is responsible forencapsulating/decapsulating requests/responses to service hosts. TheSERMON module can choose any of the following to make a request to theservice hosts: dedicated management Virtual Local Area Network (VLAN)(Physical Ethernet); Multi-Protocol Label Switching (MPLS) tagged(Openflow); and/or a higher level Transmission Control Protocol (TCP)connection to the server. The switch datapath is programmed to forwardthese packets to the correct ports in order to reach the service hosts.

The SERMON client 124, 126, 128, 130 module then translates the databaserequests into the appropriate messages that are encapsulated in aspecific VLAN tag, MPLS tag or a TCP session (at a specific TCP port).The SERMON server 132, 134, 136, 138, 140 module that runs in thecontext of the network application environment handles the SERMON client124, 126, 128, 130 requests data and returns the requested data, e.g.,in a response to PDM 102.

The present disclosure identifies the SERMON server 132, 134, 136, 138,140 running in the network application environment, e.g., on a servicehost 152, 154, 156, 158, by a SERMON server ID (ServID). The SERMONclient is identified with a specific SERMON client ID (CliID). TheSERMON client 124, 126, 128, 130 sends a list of known SERMON Servers132, 134, 136, 138, 140, identified by the ServID, to enable the PDM 102to specify the exact entity that should be contacted for performanceinformation, which is identified by SERMON CHID/SERMON ServID/AppID. TheSERMON client 124, 126, 128, 130 is also responsible for encapsulationand decapsulation of the messages between the SERMON client 124, 126,128, 130 and the SERMON server 132, 134, 136, 138, 140.

FIG. 2 illustrates a block diagram of a SERMON client and SERMON serverarchitecture according to one embodiment. The SERMON client module 204and SERMON server 210, 212, 214 can be implemented in differentenvironments as shown in FIG. 2. The Layer2 switch 202, e.g., runningSERMON client 204, could either be an OpenFlow switch, a virtual switch(vSwitch) in a Hypervisor, or a Physical Ethernet switch. The SERMONclient 204 is implemented as a software module that encapsulates therequest appropriately (with a VLAN or a MPLS tag) request to be sentonward to the SERMON server 210, 212, 214. The SERMON client 204 alsoimplements a RESTful server component to enable communication with thePDM 102. The SERMON client 204 includes a COM server 206 and a ServiceData Collector Unit (SDCU) 208. The SERMON client 204 sends SDCUrequests to service host(s), e.g., SERMON server 210, 212, 214, overswitch datapath 228. Likewise, SERMON client 204 also receives SDCUresponses over switch datapath 228.

The SERMON server 210, 212, 214 itself can be located inside a Virtualmachine running on top of Hypervisor (SERMON server 210), running on aLinux Host without a Hypervisor (SERMON server 214), or on a physicalmiddle box that hosts the server (SERMON server 212). Each SERMON server210, 212, 214 includes a SDCU 216, 220, 224 and a Platform DependentCollection Unit (PDCU) 218, 222, 226. The tagging mechanism should bechosen so as to mate the client with the server.

The SDCU is implemented as a thread, e.g., a kernel same-page merging(KSM) thread (ksmThread). The SDCU receives notifications from theSERMON module. The SDCU is responsible for encapsulation/decapsulationof requests/responses. The SDCU fetches the network monitoringparameters from the PDCU and returns the reply, e.g., response.

Network Controller

Network applications running on the centralized controller periodicallyrequest the PDM for SERMON metrics. The applications specify whichlayer2 switch and service host ID on which services are hosted. Theapplications specify the metrics in which they are interested. In oneembodiment, the applications can determine metrics for current values ora snapshot of aggregated values over time. The network application(s)receive a reply from the PDM with the requested data.

In one embodiment, the data values are applied on application specificheuristics. In one embodiment, changes can be made to data planeswitches. In this embodiment, the controller sends a new set of flowmessages to the switches to alter the traffic going through the serviceshosted on, for example, one or more of the virtual machines.

Performance Database Manager (PDM)

The database 104 contains the information that is used by the controllerapplications 114, 116, 118. The PDM should be implemented in a highlyavailable, reliable and scalable manner.

Each physical server, e.g., a physical service host or physical switch,notifies the controller 112 when the following events happen:

Each SERMON client comes up with a SERMON CliID

SERMON Server comes up with a SERMON ServID

Applications are launched with an App ID.

When the PDM 102 is launched the PDM 102 queries the centralizedcontroller 112 for a list of SERMON CliID, SERMON ServIDs andapplication ID's. The PDM 102 also periodically queries the centralizedcontroller 112 for the latest snapshot of the SERMON CliIDs, SERMONServIDs and App IDs.

There are multiple controller applications 114, 116, 118 that requireperformance data from each of the hosted services 132, 134, 136, 138,140 and each controller application 114, 116, 118 can generate a schemafile that can be sent to the data base manager 102, which in turnpopulates the data base 104 based on the schema. It is important to notethat there is no change to the hosted service 132, 134, 136, 138, 140.The database manager 102 has a per-application state that maintains acopy of the schema. Based on the schema, the database manager 102queries the appropriate entity, e.g., the hosted service, for data witha specific SERMON CliID, SERMON ServID and AppID combination.

The PDM 102 has three important building blocks:

-   -   The PDM State Manager 106 is responsible for managing all of the        states for metrics that are periodically collected from the        entity identified by CliID/ServID/AppID that runs in the context        of the hosted service environment. The PDM State Manager 106        stores these states in an application specific database 104        maintained by the PDM State Manager 106. The PDM State Manager        is also responsible for formulating messages received from the        centralized controller 112 through the COM server 110 and        funneling the formulated messages to the COM client 108.    -   The COM server 110 is responsible for parsing messages received        from the centralized controller 112 and sending these parsed        messages to the PDM state manager 106. COM server 110 also        prepares messages to be send to the controller 112, after the        PDM 102 receives a response from the appropriate entities.    -   The COM client 108 is responsible for communications between the        PDM 102 and the SERMON clients 124, 126, 128, 130. COM client        108 sends and receives performance specific requests/responses        to/from the SERMON client. COM client 108 forwards requests from        the PDM to the SERMON client(s). Likewise, COM client 108 passes        responses received from the SERMON client(s) on to the PDM.

SERMON Client

The SERMON client module 124, 126, 128, 130, 204, identified by a SERMONCliID, is resident in the switch 144, 146, 148, 150, 202 and responds tothe queries sent by the database manager 102.

The SERMON client 204 handles requests from the COM client 108. TheSERMON client checks whether the inquiry is related to a particularinstance or all instances of a hosted service 132, 134, 136, 138, 140,210, 212, 214. The SERMON client then parses the request and stores thisrequest as requested information. The SERMON client sends an internalmessage to the Service Data Collector Unit (SDCU) 208. The SDCU contactsthe appropriate SERMON ServID/AppID entity 132, 134, 136, 138, 140, 210,212, 214 for information.

The SERMON client sends a request message, e.g., a retrieve command, tothe SERMON server(s) in order to request performance data. The SDCUformats a retrieve command, encapsulates the retrieve command into anappropriate tagged frame (VLAN, MPLS, TCP connection) and forwards theencapsulated retrieve command toward its destination. This taggingmechanism depends on the configuration.

The SERMON client handles response messages from SERMON Servers. TheSERMON client waits for a response from the SERMON server. The SERMONclient checks for any errors in the received response(s). When errorsare detected, the error information is accumulated in a buffer alongwith the SerVID/AppID. When no errors are detected, the response isstored in a buffer 230 associated with the SERMON client, along with theServID/AppID and the received counter, e.g., SERMON data category,value.

Buffering, in this context, is the process of receiving requests andstoring them. Later, the responses are received by the COM client whenthe responses are returned from the SERMON servers. The COM client makesa note of the request and matches the request up with the receivedresponse.

The SERMON client sends the buffered response(s) to the PDM COM client108. The SERMON CliID is filled at the beginning of the buffer. Theresponse message is sent back to the PDM 102 that requested thisinformation.

SERMON Server

The SERMON server 132, 134, 136, 138, 140, 210, 212, 214 handles therequest, e.g., the request generated by SDCU 208, from the SERMON Client202. The datapath 228 decapsulates the request and strips the taggedheader. Datapath 228 passes the packet to the SDCU block 216, 220, 224,which parses the packet to look for an AppID. The SDCU 216, 220, 224parses the packet, for example, using a packet buffer 232, 236, 240.

The SDCU 216, 220, 224 sends a request to PDCU unit 218, 222, 226. ThePDCU unit implements the platform dependent way of collectingperformance data. In one embodiment the performance data is collectedusing a kernel thread that searches the requested information in thekernel data structure(s) and returns the data, e.g., to the SDCU 216,220, 224 from PDCU 218, 222, 226. If the PDCU cannot identify the datato be retrieved, the PDCU returns an error. The kernel thread can beused to construct a buffer in shared memory 234, 238, 242.

The SERMON server sends a response to the SERMON Client. The responsemessage includes the data returned from the PDCU. The response messageis encapsulated, e.g., by datapath 228 and returned to the requestor tobe put into the database. The request from the client is satisfied byquerying the database.

Traffic Steering Use Case

In order to improve the performance and security of their networks,network operators today deploy a wide range of specialized appliances ormiddle-boxes. An architecture based on SDN principles is used toexplicitly steer different types of traffic through the desired set ofmiddle-boxes. Using an architecture of this type provides anarchitecture that is easier to manage and provides greater scale, evenat the granularity levels of per-subscriber and per-application definedpolicies.

FIG. 3 illustrates an example system for implementing SDN inlineservices and forwarding. Services 314, 316, 334, 336 are provided tosubscribers 302, 304 using a plurality of perimeter switches 306, 312,322, 332 and inner switches 324, 326, 328, 330. A logically centralizedcontroller 112, 310 is used to manage switches and middleboxes, e.g.,services. In one embodiment, the logically centralized controller 112,310 is an Open Flow-based controller. In FIG. 3, two different servicepaths are shown. Service paths are set based on the subscriber, theapplication, and the required service order. Service paths areunidirectional, that is, different service paths are specified forupstream and downstream traffic. Service path 340 shows upstream trafficthrough Virus Scan 336, Deep Packet Inspection (DPI) 314 and ContentCache 316 before entering Internet 318 through perimeter switch 320.Service path 338 bypasses all of the services.

SDN inline services and forwarding architecture uses two different typesof switches. The Perimeter Open Flow (OF) Switches 306, 312, 322, 332are placed on the perimeter of the service delivery network. Theseswitches classify the incoming traffic and steer this traffic towardsthe next service in the chain. OF switches 306, 312, 322, 332 are theswitches to which services or gateway nodes are connected. The InnerSwitches 324, 326, 328, 330 forward the traffic using efficient Layer 2(L2) switching. Inner switches 324, 326, 328, 330 are only connected toother switches. Inner switches 324, 326, 328, 330 may or may not be OFswitches.

Traffic steering is a two-step process. The first step classifiesincoming packets and assigns them a service path based on predefinedsubscriber, application, and ordering policies. The second step forwardspackets to a next service based on its current position along itsassigned service path. This two-step traffic steering process only needsto be performed once between any two border routers, regardless of thenumber of switches that connects them.

For the different types of middle-box functionality, the set ofparameters that could be used to construct efficient heuristics for thesole purpose of steering the traffic to the correct chosen instance ofthe service is identified.

FIG. 4 illustrates hierarchy 400, which shows the hierarchicalrelationship of performance data according to one embodiment. The SERMONCliID 402 ₁, 402 ₂, . . . , 402 _(n) and ServID 404 ₁, 404 ₂, . . . ,404 _(n) are the SERMON Client and Server universally unique identifiers(UUIDs), respectively. Each child node represents a category ofperformance data that can be classified into CPU 406, Memory 408, netdata 410, and disk data 412. CPU data 406 may include load average(loadavg 414) data. Memory data 408 may include status data 416. Netdata 410 may include socket statistics (sockstat 418) data and device(dev 420) data. Dev 420 data may also include packet statistics data428. Sockstat 418 data may also include protocol (proto 424) and status(state 426) information. Protocol information 424 may include statisticsregarding User Datagram Protocol (UDP) data 430, Transmission ControlProtocol (TCP) data 432, and raw packets, e.g., Internet Protocol (IP)packets without any protocol-specific transport layer formatting. Statedata 426 may include EST data 436 from a established session or LIS data438 from a listening port. The leaf nodes in the hierarchy 400 show filenames found in the standard Linux file system that contain the data thatcan be used to form an application heuristic. The data described in FIG.4 has a hierarchical relationship. The /proc file system in Linux is onesuch example. However, even the proc file system in Linux does not havethe layout as described in hierarchy 400. As such, the hierarchicalrelationship 400 can be applied to other file systems that are capableof representing hierarchical relationships.

A controller application driving the distribution of flows to thedifferent instances of DPI, for example, could use the CPU data 406,e.g., CPU 1-min load, packet data 428, e.g., the packet rate statistics,and sockstat data 418, e.g., the number of open sockets. The DPIinspects each and every packet beyond the TCP headers scanning forrecognizable content to apply rules and, therefore, the DPI instanceprocessing the least amount of packets can be chosen to accept the flow.If there is more than an instance processing an equal number of packetsCPU load could be used, for example, as a tie breaker. Similarly, thenumber of open sockets could be used as a tiebreaker as well.

Table 1 shows the different applications and the categories ofperformance data used by each of them, according to one embodiment. Eachcell in the table shows the exact file name from FIG. 4 for eachcategory which contains appropriate data to be used by the applicationsthemselves. Instances of service names can be shown in the table to givean overall view of the performance data of a specific application.

TABLE 1 The Services and the Performance Categories they use ServiceMetric Name CPU Memory Packets Sockets Disk CF(Content loadavg statusFilter) (Resident Set Size) FW(Firewall) loadavg dev(Per sockstat procpkt stats) DPI(Deep Pkt loadavg dev(Per sockstat Inspection) proc pktstats) Spam Filter diskstat Virus Scan loadavg status dlskstat NATloadavg status dev

In one embodiment, an application queries the database for all existingSERMON client/SERMON Server entities and App ID's that are returned bythe PDM. The application pushes the schema, e.g., sends a request to thePDM, in order to retrieve performance information pertinent to theapplication. This performance information can be collected for one ormore instances of the application running on one or more entities, e.g.,one or more service hosts. The application receives a response from thePDM and if performance data for a plurality of instances of theapplication is desired an algorithm is run to choose the nextapplication instance to which a performance data flow is to bescheduled.

The Performance Database manager receives the request and validates therequest against the schema it has for the application instance. The PDMthen returns the values for the requested data items from its database.It is the responsibility of the PDM to query the specified data itemsfrom the SERMON Severs via the SERMON Clients on a periodic basis drivenby the timing requirements specified by the application.

The SERMON Client receives independent requests for performance data.The server converts these requests into a retrieve command and forwardsthe retrieve command to the appropriate SERMON Server(s).

The SERMON Server receives the message, de-capsulates it and sends it tothe kernel thread that searches and retrieves the requested informationwhich is then returned to the requesting SERMON client.

The DPI application, for example, in one embodiment, executes thefollowing steps:

a. The DPI application queries the database for all existing SERMONclient/SERMON Server entities and DPI App ID's, which are returned bythe database manager

b. Push the schema to retrieve the 1-min CPU loadavg, the number ofinput and output packets (on the virtual interface that the virtualservice is connected to) and the number of TCP sockets.

c. The application then requests the database for the information fromall Service VM's that are interesting to this application, e.g., DPI,typically all DPI instances or specific DPI instances

d. The application receives the response from the database and runs analgorithm to choose the next DPI instance to which to schedule a flow.

The Performance Database manager receives the request and validates therequest against the schema that the PDM has for DPI. The PDM thenreturns the values for the requested data items from its database. It isthe responsibility of the PDM to query the specified data items from theSERMON Severs via the SERMON Clients on a periodic basis driven by thetiming requirements specified by DPI.

The SERMON Client receives independent requests for CPU load average,the total packet count and the number of open sockets. The serverconverts these requests into a retrieve command and forwards theretrieve command to the appropriate SERMON Server(s).

The SERMON Server receives the message, de-capsulates it and sends it tothe kernel thread that searches and retrieves the requested information,e.g., DPI performance data, which is then returned to the requestingSERMON client.

TABLE 2 Per-interface statistics that can be correlated to a serviceinstance Virt. Interface Metric VIF1 VIF2 VIF3 VIF3 VIF4 Broadcast devDev Dev dev dev Pkts Out Bound dev Dev Dev dev dev Pkt Rates

Table 2 shows per-interface packet statistics, according to oneembodiment. Each row in the table represents a specific kind of metric.This table can be used to monitor the network as a whole. The number ofbroadcast packets and packet rates can be used to determine the healthof the interface(s) which could eventually be correlated to a service.

Various terminating services such as transparent content cache,video-transcoders, web proxy engines can benefit from measurements ofthe number of sockets in connected state, cpu load, and percentage ofavailable memory, to name a few.

The utilization of an intrusion prevention system (IPS), an intrusiondetection system (IDS), and/or firewalls can be modeled from theinput-output packet/byte counters and central processing unit (CPU)load. Network address translation (NAT) steering on the other hand usesan added parameter of the percent of available memory. Persistent memoryparameters like available storage capacity take an important role formail filtering or spam prevention networks. Other counters for socketsin a non-connected state or rate of in-coming packets become a guidinglight to trigger alarms for denial-of-service attacks in steeringservice networks. This framework offers an opportunity to design anappropriate heuristic to optimize the appropriate application objective.

Message Formats

The message formats between the applications and the components of theframework are shown in FIGS. 5-10. FIG. 5 illustrates a message format500 according to one embodiment. All messages carry the SERMON CliID 505followed by the SERMON ServID type 510 and the counter type 515 whichcould signify “all” or “specific”. Depending on the values of the ServIDtype 510 and Counter Request type 515, the objects 520 can be ofdifferent types. The shaded part 525 of message format 500 representsthe required part of any message between the applications and componentsof the framework.

Messages can be made asynchronous by adding a transaction identifier.Each response can then embed this transaction identifier so that thetransaction identifier can be correlated with a request. This mechanismcan be used for multiple purposes like bulking or making the serverresponses asynchronous to the context of a request.

Performance Data Request

A performance data request includes an application name, e.g., in theform of a UUID string, to identify the application. This UUID string maytake the form of an AppID. All instances of a particular service can beidentified by this application name string. The counter name object isincluded when a specific counter is being requested. A particular SERMONserver instance is identified by the ServID. FIG. 6 shows all therequests that can be sent by the application to the PDM. Each request isdenoted as such and each reply can be correlated with each request byusing the request number.

Req1 605 includes an AppID 610. All instances of a particular servicecan be identified using the AppID. Using this request allows forperformance data associated with the application across all SERMONservers to be requested using all pertinent counters.

Req2 615 includes an AppID 620 and a counter name 625. Using thisrequest allows a specific counter to be requested across all SERMONservers.

Req3 630 includes an AppID 635 and a ServID 640. Using this requestallows for application performance data using all pertinent counters tobe requested for a particular SERMON server instance.

Req4 645 includes an AppID 650, a ServID 655, and a counter name 660.Using this request allows for performance data to be requested for aspecific counter for a particular SERMON server instance.

Performance Data Reply

FIG. 7 illustrates a block diagram of a performance data reply messageformat according to one embodiment. In this embodiment, a response 705to Req1 605 returns performance data for a particular application 710for all ServIDs 715 and all Counters 720. Each counter name 720 returnsa particular counter value 725 in the response.

FIG. 8 illustrates a block diagram of a performance data reply messageformat according to one embodiment. In this embodiment, a response 805to Req2 615 returns performance data for a particular application 810for all ServIDs 815 and a specific counter 820. Each counter name 820returns a particular counter value 825 in the response.

FIG. 9 illustrates a block diagram of a performance data reply messageformat according to one embodiment. In this embodiment, a response 905to Req3 630 returns performance data for a particular application 910for all counters 920 of a particular ServID 915. Each counter name 920returns a particular counter value 925 in the response.

FIG. 10 illustrates a block diagram of a performance data reply messageformat according to one embodiment. In this embodiment, a response 1005to Req4 645 returns performance data for a particular application 1010for a specific ServID 1015 and a specific Counter 1020. The counter name1020 returns a particular counter value 1025 in the response.

The integer part of the value in the counter objects in the responses ofFIGS. 7, 8, 9, and 10 can have up to 128 digits and the fractional partof the number can be up to nine digits. The application name itself canbe described with a 128 byte string. The ServID is a UUID, which, in oneembodiment, is a sixteen byte hexadecimal string.

Each one of the responses in FIGS. 7, 8, 9, and 10 can have an errorobject that replaces the counter value field in the counter object. Theerror string can be one of the following:

-   -   1—Invalid Counter Requested    -   2—Malformed Request    -   3—Retry Request    -   4—Request authorization failure

Database Manager and SERMON Client Messaging

In one embodiment, the database manager and the SERMON Client is capableof exchanging request messages.

A request, e.g. Req1 605, for all counters from all service instances ofa particular application can be implemented using the following command:

GEThttp://api.perfdata.com/<version>/CliID/AppID/allService/allCounter/.

A request, e.g., Req3 630, for all counters from a specific serviceinstance of an application can be implemented using the followingcommand:

GET http://api.perfdata.com/<version>/CliID/AppID/ServID/allCounter.

A request, e.g., Req2 615, for all application instances, Service VMs,for a specific counter can be implemented using the following command:

GEThttp://api.perfdata.com/<version>/CliID/AppID/allService?counter=“counter-name”.

A request, e.g., Req4 645, of a specific instance of an application fora specific counter can be implemented using the following command:

GEThttp://api.perfdata.com/<version>/CliID/AppID/ServID?counter=“counter-name”.

The responses to these queries are returned in standard XML, JSON or anyother chosen format. The data in the replies is organized as shown inFIGS. 7, 8, 9, and 10.

The following standard http errors are returned to the above requests:

1. OK. No Error

2. Bad request

3. Internal Error

4. Retry request

SERMON Client and SERMON Server Messaging

This messaging happens via a configured tagging mechanism such as VLANtags or MPLS tags. The particular tagging mechanism or format should beone that can be recognized by all incarnations of the hosted services.The message is encapsulated in a tagged frame and forwarded to itsdestination.

These requests are sent to the appropriate SERMON Servers located in thedifferent hosted environments, identified by ServID and the applicationidentifier, AppID, in the request uniform resource identifier (URI). TheSERMON server iterates through all the counters for all AppIDs and foreach counter, the SERMON server parses the name, looks up the name, andreturns the value or an error corresponding to the request. The SERMONserver should set the number of counter objects field appropriately toenable the hosted service instance to iterate through every requestedobject.

FIG. 11 shows a request/response format for a counter according to oneembodiment. Initially, the server in the hypervisor fills in the numberof counter objects, sets the command to fetch and fills the names of thecounter fields in the counter object. The SERMON server also sets thecounter value field and the error code field to zero.

The second step in the process of collecting the data is to notify theservice VM instance that a request has been sent.

For each of the counters specified in the shared memory the service VMinstance parses the counter name, looks through its resources (typicallythe proc file system) for the specified counter, and returns the valuein the counter value field described above.

Appropriate error codes are returned in the error codes field. Theseerror codes may include the following:

0—No error

1—Busy, Retry

2—Counter Name Not Found

FIG. 12 illustrates a block diagram of a method 1200 for providingnetwork performance monitoring according to one embodiment. At block1205, at least one application is run on a network controller. Theapplications running on the network controller include, but are notlimited to, a content filter, a firewall, deep packet inspection (DPI),a spam filter, a virus scan, and network address translation (NAT).

At block 1210, a request for performance data information, e.g., SERMONdata/metrics, is sent to a PDM. The request includes the applicationname, which can be a UUID such as an AppID. In one embodiment, allinstances of a particular service can be identified by the applicationname.

Network applications running on the centralized controller periodicallyrequest the PDM for SERMON metrics. The applications specify whichlayer2 switch and service host ID on which services are hosted. Theapplications specify the metrics in which they are interested. In oneembodiment, the applications can determine metrics for current values ora snapshot of aggregated values over time.

In one embodiment, the performance data associated with the at least oneapplication can be requested across all service monitoring (SERMON)servers using all pertinent counters. In one embodiment, the performancedata associated with the at least one application is requested acrossall service monitoring (SERMON) servers using a specific counter. In oneembodiment, the performance data associated with the at least oneapplication is requested across a specific service monitoring (SERMON)server using all pertinent counters. In one embodiment, the performancedata associated with the at least one application is requested across aspecific service monitoring (SERMON) server using a specific counter.

At block 1215, a response to the request for performance datainformation is received. The network application(s) receive a reply fromthe PDM with the requested data.

FIG. 13 illustrates a block diagram of a method 1300 for determining aservice path using network performance monitoring data, according to oneembodiment. At block 1305, performance data is determined for one ormore applications.

At block 1310, a service path is assigned by steering traffic to aparticular instance of each of the one or more applications using theperformance data. In one embodiment, the performance data is applied toapplication specific heuristics. In one embodiment, changes can be madeto data plane switches. In this embodiment, the controller sends a newset of flow messages to the switches to alter the traffic going throughthe services hosted on, for example, one or more of the virtualmachines. At block 1315, the steered traffic is forwarded to a nextapplication based on a current position along a service path.

FIG. 14 illustrates a block diagram of a method 1400 for providingnetwork performance monitoring using a PDM, according to one embodiment.At block 1405, a list of one or more switches, one or more hostedservices, and one or more applications is determined. On boot up, thePDM receives from the network controller a list of switches, the hostedservices of each switch, and applications of each switch. The PDMperiodically queries the network controller for a list of activeswitches, Service Hosts, and applications. The PDM stores and updatesthe list on the AppDB. In one embodiment, the one or more switches areLayer2 switches.

At block 1410, a request for SERMON data is received from one or moreapplications running on a network controller. A COM server of the PDMparses the request and sends the request to a PDM state manager.

At block 1415, the request is sent to a SERMON client, e.g., running ona switch. At block 1420, a response is received from the SERMON client.

In one embodiment, the request is a snapshot request. If the snapshotrequest is made for the first time, the AppID of the application isflagged for information retrieval. Otherwise, the PDM state managerfetches the values related to the snapshot request previously stored inthe AppDB.

In one embodiment, the PDM state manager formulates request messages forevery pertinent metric. Request messages are sent to each switch hostingthe services using a COM client. A response is sent to the applicationon the network controller that requested the SERMON data once a reply,e.g., response, message has been received from the switch.

In one embodiment, when a flag has been set for an AppID, the PDM makesa request for SERMON metrics through the COM client. The PDM stores anapplication specific aggregated SERMON metric in the AppDB. When aretrieval flag is set for an AppID, a response is sent to theapplication on the controller once a reply is received from the switch.

FIG. 15 illustrates a block diagram of a method 1500 for providingnetwork performance monitoring using a SERMON client, according to oneembodiment. The SERMON client running in the switch registers itselfusing an ID, e.g., a ServID, with the network controller on bootup. TheSERMON client also notifies a controller of the service host(s) andapplication(s) hosted on the service host(s) using an ID, e.g., theServID. At block 1505, a request for SERMON metrics is received from thePDM. A COM server of the SERMON client parses the request and send therequest to a SDCU.

At block 1510, the request is sent to the SERMON server designated inthe request. The SERMON server runs in a service host. In oneembodiment, the SDCU retrieves the service host to which the requestneeds to be sent. For each host, the SDCU formulates a command and anexpected data type, encapsulates the request in a designated tag, sendsthe encapsulated request, e.g., frame, to a switch datapath, and waitsfor a reply, e.g., response, from the service host.

At block 1515, a reply is received from the SERMON server. In oneembodiment, the SDCU reads the reply. The SDCU parses the buffer andformulates a message for the COM server of the SERMON client bydecapsulating the tagged frame. The SDCU sends a reply message to COMserver of the SERMON client. At block 1520, the COM server send a replyto the PDM.

FIG. 16 illustrates a block diagram of a method 1600 for providingnetwork performance monitoring using a SERMON server, according to oneembodiment. At block 1605, a request is received at the SERMON serverfrom a SERMON client. The SERMON server is running in a service host.The service host has a SDCU server block used to collect data. The SDCUis implemented as a thread, e.g., a ksmthread. The SDCU receivesnotifications, e.g., requests, sent to the SERMON server. The SDCUdecapsulates the tagged frame, e.g., received from the SERMON client andparses the packet buffer.

At block 1610, the SERMON data is collected using a kernel thread. Theksmthread fetches SERMON data from local kernel data structures. Theksmthread constructs a buffer in the shared memory and sends thenotification, e.g., reply/response, to the SERMON server byencapsulating the notification as a tagged frame. In one embodiment, theksmthread is implemented in a Platform dependent Data Collection Unit(PDCU). At block 1615, the collected data is sent in the notification tothe SERMON client.

FIG. 17 illustrates a block diagram of an exemplary computer systemaccording to embodiments of the invention. The exemplary computer system1700 in FIG. 17 can be used to implement controller 112, PDM 102, SERMONclient 124, 126, 128, 130, and/or SERMON server 132, 134, 136, 138, 140.Those skilled in the art would recognize that other computer systemsused to implement this device may have more or less components and maybe used in the disclosed embodiments.

The computer system 1700 includes a bus(es) 1750 that is coupled with aprocessing system 1715, a power supply 1720, volatile memory 1725 (e.g.,double data rate random access memory (DDR-RAM), single data rate (SDR)RAM), nonvolatile memory 1730 (e.g., hard drive, flash memory,Phase-Change Memory (PCM). The processing system 1715 may be furthercoupled to a processing system cache 1710. The processing system 1715may retrieve instruction(s) from the volatile memory 1725 and/or thenonvolatile memory 1730, and execute the instruction to performoperations described above. The bus(es) 1750 couples the abovecomponents together and further couples a display controller 1770, oneor more input/output devices 1780 (e.g., a network interface card, acursor control (e.g., a mouse, trackball, touchscreen, touchpad, etc.),a keyboard, etc.). In one embodiment, the display controller 1770 isfurther coupled to a display device 1775.

As described herein, instructions may refer to specific configurationsof hardware such as application specific integrated circuits (ASICs)configured to perform certain operations or having a predeterminedfunctionality or software instructions stored in memory embodied in anon-transitory computer readable medium. Thus, the techniques shown inthe figures can be implemented using code and data stored and executedon one or more electronic devices (e.g., an end station, a networkelement). Such electronic devices store and communicate (internallyand/or with other electronic devices over a network) code and data usingcomputer-readable media, such as non-transitory computer-readablestorage media (e.g., magnetic disks; optical disks; random accessmemory; read only memory; flash memory devices; phase-change memory) andtransitory computer-readable communication media (e.g., electrical,optical, acoustical or other form of propagated signals—such as carrierwaves, infrared signals, digital signals). In addition, such electronicdevices typically include a set of one or more processors coupled to oneor more other components, such as one or more storage devices(non-transitory machine-readable storage media), user input/outputdevices (e.g., a keyboard, a touchscreen, and/or a display), and networkconnections. The coupling of the set of processors and other componentsis typically through one or more buses and bridges (also termed as buscontrollers). Thus, the storage device of a given electronic devicetypically stores code and/or data for execution on the set of one ormore processors of that electronic device. Of course, one or more partsof an embodiment of the invention may be implemented using differentcombinations of software, firmware, and/or hardware.

While the flow diagrams in the figures show a particular order ofoperations performed by certain embodiments of the invention, it shouldbe understood that such order is exemplary (e.g., alternativeembodiments may perform the operations in a different order, combinecertain operations, overlap certain operations, etc.).

The present invention allows advanced heuristics to be applied based onthe performance and configuration information which is made available tothe application. This framework has the following characteristics:

-   -   1. It is scalable—The number of connections increases        proportional to the number of machines (or the number of layer2        switches); the framework only connects with switches. A single        switch typically can be connected to multiple appliances.    -   2. It is extendable—The framework can be extended to provide new        performance statistics to allow new applications to be deployed.        These applications can be agile and dependent on subscriber load        thereby providing cost effective service deployments.    -   3. It is non-intrusive—Applications need not be compiled with        special libraries or do not need to be reprogrammed to take        advantage of the framework. Applications are completely unaware        of the performance statistics being gathered.    -   4. It works seamlessly in both virtualized and non-virtualized        chassis-like clustered or data-centre centric environments.    -   5. The SERMON module can be easily integrated with “healthd” for        the smart services router (SSR) to provide important performance        related information for a variety of applications—service aware        support node (SASN), border gateway function (BGF), border        network gateway (BNG), evolved packet gateway (EPG), etc. The        “healthd” on the SSR monitors the general health of the system        in terms of the functionality of the components, responsiveness        of the components and the quality of the connections between the        components, etc. In this context, SERMON provides the necessary        performance information that relates to the functionality and        quality. If the functionality stops working, the performance        numbers can indicate this, for example, by showing a very low        transfer rate and a high rate of error.

While the invention has been described in terms of several embodiments,those skilled in the art will recognize that the invention is notlimited to the embodiments described. The description is thus to beregarded as illustrative instead of limiting.

What is claimed is:
 1. A method for providing network performancemonitoring using a performance database manager (PDM), the methodcomprises: determining, by the PDM, a list of one or more switches, oneor more hosted services of each switch, and one or more applications ofeach switch; receiving, by the PDM, a request for service monitoring(SERMON) data from an application running on a network controller,wherein the request comprises an application identifier, a datapathidentifier (DPID), a host identifier (HostID), and actual data items;sending, by the PDM, the request to a SERMON client running on one ofthe one or more switches; receiving, by the PDM, a response from theSERMON client; and, sending, by the PDM, the response to the applicationrunning on the network controller upon receipt of the response from theSERMON client.
 2. The method of claim 1, wherein the one or moreswitches comprise layer2 switches.
 3. The method of claim 2, wherein thePDM receives the list on boot up.
 4. The method of claim 2, wherein thePDM periodically queries the network controller to update the list. 5.The method of claim 1, wherein a communications server of the PDM parsesthe request and sends the list to a PDM state manager.
 6. The method ofclaim 1, wherein the request is a snapshot request.
 7. The method ofclaim 6, wherein when the snapshot request comprises a first timerequest, and the application identifier is flagged for retrieval ofSERMON information.
 8. The method of claim 1, wherein a PDM statemanager stores in a database SERMON data related to the applicationidentifier from the response.
 9. An apparatus for providing networkperformance monitoring, comprising: a performance database manager(PDM), comprising: a PDM state manager; a communications server (COMserver) coupled to the PDM state manager; a communications client (COMclient) coupled to the PDM state manager; and, an application database(AppDB) coupled to the PDM state manager; the PDM configured tocommunicate with a network controller and a switch running a servicemonitoring (SERMON) client; the PDM further configured to: determine alist of one or more switches, one or more hosted services of eachswitch, and one or more applications of each switch; receive a requestfor SERMON data from an application running on the network controller,wherein the request comprises an application identifier, a datapathidentifier (DPID), a host identifier (HostID), and actual data items;send the request to the SERMON client running on one of the one or moreswitches; receive a response from the SERMON client; and, send theresponse to the application running on the network controller uponreceipt of the response from the SERMON client.
 10. The apparatus ofclaim 9, wherein the one or more switches comprise layer2 switches. 11.The apparatus of claim 9, wherein the COM server parses the request andsends the list to the PDM state manager.
 12. The apparatus of claim 9,wherein the request comprises a snapshot request.
 13. The apparatus ofclaim 12, wherein when the snapshot request comprises a first timerequest, and the application identifier is flagged for retrieval ofSERMON information.
 14. The apparatus of claim 9, wherein a PDM statemanager stores in the AppDB SERMON data related to the applicationidentifier from the response.
 15. A performance database manager (PDM)for providing network performance monitoring, wherein the PDM isconfigured to communicate with a network controller and a switch runninga service monitoring (SERMON) client, the PDM comprising: a PDM statemanager; a communications server (COM server) coupled to the PDM statemanager; a communications client (COM client) coupled to the PDM statemanager; an application database (AppDB) coupled to the PDM statemanager; the PDM configured to: query the centralized controller for alist of SERMON client identifier (CliID), SERMON server identifiers(ServIDs) and application identifiers (App IDs); periodically query thenetwork controller for latest snapshot of the SERMON CliIDs, the SERMONServIDs and the App IDs; the PDM state manager configured to: manage allstates for metrics that are periodically collected from the SERMONclient identified by the CliID, the ServID, and the AppID; store thestates in the AppDB; formulate a message received from the networkcontroller through the COM server and funnel the formulated message tothe COM client, wherein the message received from the network controllercomprise an application identifier, a datapath identifier (DPID), a hostidentifier (HostID), and actual data items; the COM server configuredto: parse the message received from the network controller and send theparsed message to the PDM state manager; prepare a message to be sent tothe network controller after the PDM receives a performance specificresponse from the SERMON client; and, the COM client configured to:enable communications between the PDM and the SERMON client; send aperformance specific request to the SERMON client; and receive theperformance specific response from the SERMON client.